Numerous data processing applications require data to be accessed in a deterministic manner that includes at least one non-sequential access. For example, in a number of media applications, such as processing of video data, a block of video data often has to be accessed in what is known as a zig-zag pattern. See FIG. 1 wherein a block of 8×8 video pixels accessed in a zig-zag pattern is illustrated. Such accessing of memory locations are frequently performed when video data are processed in accordance with one of a number of the video processing standards, such as JPEG or MPEG, during e.g. the encoding process. [JPEG=Joint Photographic Experts Group; MPEG=Moving Pictures Expert Group.]
Typically in the prior art, accessing data in a non-sequential manner requires the employment of multiple address generators and multiple control registers. Often, a first address generator is employed to generate a first set of addresses to access a first collection of memory locations to retrieve the commands for driving a second address generator to generate a second set of addresses to access the ultimate data of interest in the desired deterministic non-sequential pattern. Moreover, at least a couple of control registers are required to stage the retrieved commands.
Thus, a more efficient technique requiring less hardware is desired.